package com.ntschy.bt.entity.dto.btPolicyDTO;

import com.baomidou.mybatisplus.annotation.TableField;
import com.ntschy.bt.entity.enums.btpolicyEnum.BtPolicyAuditStatusEnum;
import com.ntschy.bt.entity.enums.btpolicyEnum.BtPolicyLevelEnum;
import com.ntschy.bt.entity.enums.btpolicyEnum.BtPolicyStatusEnum;
import com.ntschy.bt.entity.enums.btpolicyEnum.BtPolicyTypeEnum;
import com.ntschy.bt.entity.valid.BtPolicyGroups;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;

/**
 * @author cm
 */
@Data
@ApiModel(description = "政策新增更新DTO")
public class BtPolicyAddUpdateDTO implements Serializable {
    private static final long serialVersionUID = 1L;

    @ApiModelProperty(value = "政策新增ID")
    @NotBlank(message = "政策新增ID不能为空", groups = BtPolicyGroups.Update.class)
    @Length(min = 36, max = 36, message = "政策新增ID长度不合法", groups = BtPolicyGroups.Update.class)
    private String id;

    /**
     * 政策标题
     */
    @ApiModelProperty(value = "政策标题")
    @NotBlank(message = "政策标题不能为空", groups = { BtPolicyGroups.Add.class, BtPolicyGroups.Update.class })
    @Length(min = 2, max = 100, message = "政策标题长度必须为2-10位", groups = { BtPolicyGroups.Add.class, BtPolicyGroups.Update.class })
    private String title;

    /**
     * 政策级别 1-国家级 2-省级 3-市级 4-区级
     */
    @ApiModelProperty(value = "政策级别 1-国家级 2-省级 3-市级 4-区级")
    @NotNull(message = "政策级别不能为空", groups = { BtPolicyGroups.Add.class, BtPolicyGroups.Update.class })
    private BtPolicyLevelEnum level;

    /**
     * 政策类型：1-产业发展 2-科技人才 3-金融 4-土地 5安全生产
     */
    @ApiModelProperty(value = "政策类型：1-产业发展 2-科技人才 3-金融 4-土地 5安全生产")
    @NotNull(message = "政策类型不能为空", groups = { BtPolicyGroups.Add.class, BtPolicyGroups.Update.class })
    private BtPolicyTypeEnum type;


    /**
     * 发布时间
     */
    @ApiModelProperty(value = "发布时间")
    @NotBlank(message = "政策发布时间不能为空", groups = { BtPolicyGroups.Add.class, BtPolicyGroups.Update.class })
    private String publishTime;

    /**
     * 创建时间
     */
    @ApiModelProperty(value = "创建时间")
    @NotNull(message = "创建时间", groups = { BtPolicyGroups.Add.class, BtPolicyGroups.Update.class })
    private String createTime;

    /**
     * 创建人ID
     */
    @ApiModelProperty(value = "创建人ID")
    @NotNull(message = "创建人ID", groups = { BtPolicyGroups.Add.class, BtPolicyGroups.Update.class })
    private String createUserId;

    /**
     * 创建人姓名
     */
    @ApiModelProperty(value = "创建人名字")
    @NotNull(message = "创建人姓名", groups = { BtPolicyGroups.Add.class, BtPolicyGroups.Update.class })
    private String createUserName;

    /**
     * 政策来源
     */
    @ApiModelProperty(value = "政策来源")
    @NotBlank(message = "政策来源不能为空", groups = { BtPolicyGroups.Add.class, BtPolicyGroups.Update.class })
    private String source;

    /**
     * 政策信息状态 1-已提交 2-待审核 3-已完成
     */
    @ApiModelProperty(value = "政策信息状态 1-已提交 2-待审核 3-已完成")
    private BtPolicyStatusEnum status;

    /**
     * 发布文本内容
     */
    @ApiModelProperty(value = "发布文本内容")
    @NotBlank(message = "发布文本内容不能为空", groups = { BtPolicyGroups.Add.class, BtPolicyGroups.Update.class })
    @Length(min = 2, max = 2000, message = "发布内容长度必须为2-10位", groups = { BtPolicyGroups.Add.class, BtPolicyGroups.Update.class })
    private String info;

    /**
     * 提交人I
     */
    @ApiModelProperty(value = "发布文本内容")
    @NotBlank(message = "发布文本内容不能为空", groups = { BtPolicyGroups.Add.class, BtPolicyGroups.Update.class })
    private String commitUserId;

    /**
     * 提交人姓名
     */
    @ApiModelProperty(value = "发布文本内容")
    @NotBlank(message = "发布文本内容不能为空", groups = { BtPolicyGroups.Add.class, BtPolicyGroups.Update.class })
    private String commitUserName;

    /**
     * 提交政策时间
     */
    @ApiModelProperty(value = "发布文本内容")
    @NotBlank(message = "发布文本内容不能为空", groups = { BtPolicyGroups.Add.class, BtPolicyGroups.Update.class })
    private String commitTime;

    /**
     * 政策颁布时间
     */
    @ApiModelProperty(value = "政策颁布时间")
    @NotBlank(message = "政策颁布时间不能为空", groups = { BtPolicyGroups.Add.class, BtPolicyGroups.Update.class })
    private String awardTime;

    /**
     * 审核人ID
     */
    @ApiModelProperty(value = "审核人ID")
    private String examineUserId;

    /**
     * 审核人姓名
     */
    @ApiModelProperty(value = "审核人姓名")
    private String examineUserName;

    /**
     * 审核时间
     */
    @ApiModelProperty(value = "审核时间")
    private String examineTime;

    /**
     * 审核备注
     */
    @ApiModelProperty(value = "审核备注")
    private String examineOpinion;

    /**
     * 审核结果
     */
    @ApiModelProperty(value = "审核结果")
    private BtPolicyAuditStatusEnum examineResult;

    /**
     * 是否删除 ： 0-正常   1-删除
     */
    @ApiModelProperty(value = "是否删除 ： 0-正常  1-删除")
    @NotNull(message = "是否删除", groups = { BtPolicyGroups.Add.class, BtPolicyGroups.Update.class })
    private Integer delFlag;

}
